package projetolp2.Tests;

import java.util.List;
import java.util.ArrayList;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Test;

import projetolp2.Sistem.*;

public class testaOpiniao {
	
	private Opiniao umaOpiniao;
	
	@Before
	public void criaUmaOpiniao() throws Exception{
		
		List<OpinioesDeUsuarios> algunsVotos = new ArrayList<OpinioesDeUsuarios>();
		algunsVotos.add(OpinioesDeUsuarios.BONZINHO);
		umaOpiniao = new Opiniao("28/05/2011", "Mayra",algunsVotos);
	}
	
	@Test
	public void testGets() throws Exception{
		
		Assert.assertEquals("Data nao corresponde ao esperado!",umaOpiniao.getData(),"28/05/2011");
		List<OpinioesDeUsuarios> algunsVotos = new ArrayList<OpinioesDeUsuarios>();
		algunsVotos.add(OpinioesDeUsuarios.BONZINHO);
		umaOpiniao = new Opiniao("28/05/2011", "Mayra",algunsVotos);
		Assert.assertEquals("Voto nao corresponde ao esperado!",umaOpiniao.getVotos(),algunsVotos);
		Assert.assertEquals("Nome de Usuario nao corresponde ao esperado!", umaOpiniao.getNomeUsuario(),"Mayra");
	}
	
	@Test
	public void testSets(){
		
		umaOpiniao.setData("30/03/2011");
		Assert.assertEquals("Data mudada de forma errada!", umaOpiniao.getData(),"30/03/2011");
		List<OpinioesDeUsuarios> algunsVotos = new ArrayList<OpinioesDeUsuarios>();
		algunsVotos.add(OpinioesDeUsuarios.BASTANTE_BOM);
		umaOpiniao.setVotos(algunsVotos);
		Assert.assertEquals("Votos mudados de forma errada!",umaOpiniao.getVotos(),algunsVotos);
		umaOpiniao.setNomeUsuario("Kelly");
		Assert.assertEquals("Nome mudado de forma errada!", umaOpiniao.getNomeUsuario(),"Kelly");
		
	}
	
	@Test 
	public void testConstrutor() throws Exception{
		
		try{
			List<OpinioesDeUsuarios> algunsVotosTest = new ArrayList<OpinioesDeUsuarios>();
			algunsVotosTest.add(OpinioesDeUsuarios.BASTANTE_BOM);
		    new Opiniao("","Mayra",algunsVotosTest);
		}catch (Exception e){
			Assert.assertEquals("Data errada!","Data nao pode ser nula ou vazia!",e.getMessage());
		}
		
		try{
			List<OpinioesDeUsuarios> algunsVotosTest = new ArrayList<OpinioesDeUsuarios>();
			algunsVotosTest.add(OpinioesDeUsuarios.BASTANTE_BOM);
		    new Opiniao(null,"Mayra",algunsVotosTest);		
		}catch (Exception e){
			Assert.assertEquals("Data errada!","Data nao pode ser nula ou vazia!",e.getMessage());
		}
		
		try{		
			List<OpinioesDeUsuarios> algunsVotosTest = new ArrayList<OpinioesDeUsuarios>();
			algunsVotosTest.add(OpinioesDeUsuarios.BASTANTE_BOM);
		    new Opiniao("28/05/2011","Mayra",null);	
		}catch(Exception e){
			Assert.assertEquals("Votos errados!","Votos de usuario nao pode ser nulo ou vazio!",e.getMessage());
	}
		
	}
	
	@Test
	public void testEquals(){
		
		Assert.assertTrue(!umaOpiniao.equals(null));
		Assert.assertEquals(umaOpiniao, umaOpiniao);
		
	}
	
	@Test
	public void testToString(){
		Assert.assertEquals("ToString errado!"," Data: 28/05/2011 Votos: [BONZINHO]", umaOpiniao.toString());
	}

	
}